home *** CD-ROM | disk | FTP | other *** search
- #include "tear.h"
-
- RgnHandle gTearRgn;
-
- OSErr PrepareTearRgn(void)
- {
- OSErr err = noErr;
-
- PicHandle pict = GetPicture(128);
-
- if (pict != nil)
- {
- BitMap bits;
- Rect r;
-
- r = (**pict).picFrame;
-
- bits.bounds = r;
- bits.rowBytes = (((r.right - r.left) + 15) / 16) * 2;
- bits.baseAddr = NewPtrClear((long)bits.rowBytes * (long)(r.bottom - r.top));
-
- if (bits.baseAddr != nil)
- {
- GrafPort port;
- GrafPtr save_port;
-
- GetPort(&save_port);
- OpenPort(&port);
- SetPort(&port);
-
- SetPortBits(&bits);
- ClipRect(&r);
- DrawPicture(pict, &r);
-
- gTearRgn = (RgnHandle)NewHandleSysClear(sizeof(Region));
- err = BitMapToRegion(gTearRgn, &bits);
- DisposePtr(bits.baseAddr);
-
- SetPort(save_port);
- }
- else
- err = memFullErr;
- }
- else
- err = memFullErr;
-
- return err;
- }
-